<?php
/**
 * Page connexion du module default
 * Permet de se connecter
 *
 * @category actions
 * @package administration
 *
 * @author M.CASTANHEIRO, M.MEUNIER, O.PATTE, C.PORTEMER, R.THERY-HERMAIN
 * @version 1.0
 */
class connexionAction extends shAction
{
    /**
     * Fonction appellée automatiquement pour toutes les requêtes de l'action
     */
    public function init() {
	$this->setTitle('Accès réservé');
    }

     /**
     * Execute la méthode par défaut pour l'action index
     */
    public function execute() {
	// Si connecté, rediriger vers l'administration
	if ( shSession::__instance()->isAuthenticated() )
	    shAction::redirect('administration');


	$formulaire = new shFormulaire;
	$formulaire->setSubmitText('Me connecter');
	

	shField::text('Identifiant ou adresse e-mail')
		->setHelper('Première connexion ? Utilisez votre adresse e-mail')
		->appendTo($formulaire);

	shField::password('Mot de passe')
		->setHelper('Première connexion ? Contactez l\'administrateur')
		->appendTo($formulaire);

	shField::checkbox('Connexion automatique')
		->setHelper('Vous serez automatiquement authentifié(e) lors de prochaines connexions')
		->appendTo($formulaire);

	$formulaire->setCheck(function($formulaire) {
		if ( !$formulaire->getField('Identifiant ou adresse e-mail')->isError() AND !$formulaire->getField('Mot de passe')->isError() ) {
		    $user = shSGBD::selectOne('SELECT user.id, user.identifiant, user.motdepasse '.
					      'FROM user '.
					      'WHERE user.identifiant=:identifiant '.
					      'OR user.email=:identifiant',
					      array(':identifiant' => $formulaire->getField('Identifiant ou adresse e-mail')->getValue()));

		    if ( !$user ) {
			$formulaire->getField('Identifiant ou adresse e-mail')->setError('Identifiant inconnu');
		    }
		    elseif ( $user->motdepasse != sha1($formulaire->getField('Mot de passe')->getValue()) ) {
			$formulaire->getField('Mot de passe')->setError('Mot de passe incorrect');
		    }
		    else {
			$formulaire->assign('user', $user);
		    }
		}
	    });

	$formulaire->setSubmit(function($formulaire) {
	    // Tente un session:login et une sauvegarde cookies si demandé
	    shSession::__instance()->login($formulaire->get('user')->id,
					   $formulaire->get('user')->motdepasse,
					   $formulaire->getField('Connexion automatique')->isValue());

	    // Redirige vers l'index de l'administration
	    shAction::redirect('administration');
	});


	$this->assign('formulaire', $formulaire);
    }
}
?>
